package com.ztrue.framework.handler;

/**
 * 表示一个处理器并非所需类型异常
 *
 * @author zhangw
 * @date 2016/11/15 16:37
 * @version: 1.0
 */
public class HandlerNotOfRequiredTypeException extends HandlerException {
    /**
     * 处理器名称
     */
    private String handlerName;
    /**
     * 所需的类型
     */
    private Class requiredType;
    /**
     * 实际的类型
     */
    private Class actualType;

    /**
     * 初始化一个处理器并非所需类型异常
     *
     * @param handlerName  处理器名称
     * @param requiredType 真实类型
     * @param actualType   需求类型
     */
    public HandlerNotOfRequiredTypeException(String handlerName, Class requiredType, Class actualType) {
        super(String.format("获取[%s]处理器失败，无法将[%s]类型转换为[%s]类型", handlerName, actualType.toString(), requiredType.toString()));
        this.handlerName = handlerName;
        this.requiredType = requiredType;
        this.actualType = actualType;
    }

    /**
     * 获取处理器名称
     *
     * @return
     */
    public String getHandlerName() {
        return handlerName;
    }

    /**
     * 获取所需的类型
     *
     * @return
     */
    public Class getRequiredType() {
        return requiredType;
    }

    /**
     * 获取实际的类型
     *
     * @return
     */
    public Class getActualType() {
        return actualType;
    }
}
